/*
 ============================================================================
 Name        : AlgoritmosPlanificacion.h
 Author      : SOogle
 Version     : 1.0
 Copyright   : All rights reserved
 Description : FUSELAGE - FUSE FAT32 FILE SYSTEM
 ============================================================================
 */

#ifndef COLAS_H_
#define COLAS_H_

/*
 ============================================================================
 TIPOS DE DATOS - COLAS
 ============================================================================
 */

typedef struct t_pedido
{
	char lectura_o_escritura;
	int32_t direccionSector;
	char planificador_id[25];
	int32_t conexion_ppd_id;
	int32_t conexion_pfs_id;
	char info[512];
}__attribute__ ((__packed__)) t_pedido;

typedef struct NodoCola
{
	t_pedido pedido;
	struct NodoCola *siguiente;
}__attribute__ ((__packed__))t_nodoCola;

typedef struct ColaPedidos
{
	sem_t cantidadPedidos;
	t_nodoCola *frente;
	t_nodoCola *fin;
}__attribute__ ((__packed__))t_Cola;

typedef struct PPD_CHS
{
	int32_t cylinder;
	int32_t head;
	int32_t sector;
}__attribute__ ((__packed__))PPD_CHS;

/*
 ============================================================================
 PROTOTIPO DE FUNCIONES QUE UTILIZAN COLAS
 ============================================================================
 */

t_Cola *crearCola();
void agregarPedido_cola(t_pedido pedidoNuevo);
t_pedido quitarPedido_SSTF();
t_pedido quitarPedido_NSTEP();
PPD_CHS proximoPedido_SSTF();
PPD_CHS proximoPedido_NSTEP();
t_Cola *armarColaActiva();
void destruirCola(t_Cola *colaDestroy);

#endif /* COLAS_H_ */
